

import dayjs from 'dayjs';

/**
 * 处理日期 （日期 + 时刻 + :00） 拼接，如果时刻为 24:00 即是最后一个值 那么（日期+1 + 00:00 + :00）
 * @param date 日期
 * @param time 时刻
 * @param  index 第几个时刻
 * @param  arrLength 数据长度
*/
export const dulDate = (date: string, time: string, index: number, arrLength: number): string => {
  if (index === arrLength - 1) {
    return dayjs(date).add(1, 'day').format('YYYY-MM-DD') + ' ' + '00:00:00'
  } else {
    return date + ' ' + time + ":00"
  }
}


/**处理字符串转数字，为null的话不转换 */
export const stringToNum = (val: string) => {
  if (val === "0" || val) {
    return Number(val)
  } else {
    return val
  }
}


/**
* 根据日期范围，返回连续的日期数组
* @example
* createSerialDates(['2020-01-01', '2020-01-02'], 'YYYY-MM-DD HH:mm:ss', 24) => ["2020-01-01 00:00:00", "2020-01-01 01:00:00", "2020-01-01 02:00:00"...]
* createSerialDates(['2020-01-01', '2020-01-02'], 'YYYY-MM-DD HH:mm:ss', 96) => ["2020-01-01 00:00:00", "2020-01-01 00:15:00", "2020-01-01 00:30:00",...]
* createSerialDates(['2020-01-01', '2020-01-02'], 'YYYY-MM-DD', 1) => ["2020-01-01", "2020-01-02"]
* @param daterange 日期范围
* @param onedayDataNums 一天数据量，比如一天1个点、24个点、96个点数据
* @param valueFormat 返回数据的日期格式 （默认：YYYY-MM-DD  ）| YYYY-MM-DD HH-mm:ss ...
* @param startBit 开始为 默认为第0位开始
* @returns ['YYYY-MM-DD','YYYY-MM-DD'....]
*/
export const createSerialDates = (daterange: string[], onedayDataNums: number = 24, valueFormat: string = 'YYYY-MM-DD', startBit: number = 0): string[] => {
  const [startDate, endDate] = daterange
  const diffDays = dayjs(endDate).diff(startDate, 'day')
  const start = dayjs(startDate).startOf('day').format('YYYY-MM-DD HH:mm:ss')
  const interval = 24 * 60 / onedayDataNums // 数据时间间隔的单位为分钟
  return Array.from({ length: (diffDays + 1) * onedayDataNums }, (v, i) => {
    /**startBit的值为1，那么为 00:00 时使用 24:00 */
    let minute = dayjs(start).add((i + startBit) * interval, 'minute').format(valueFormat)
    if (minute === '00:00') {
      minute = startBit ? '24:00' : minute
    }
    return minute
  })
}

